Azure CLI を使用したサービス プリンシパル ロールの管理 您所在的位置:网站首页 azure service principle Azure CLI を使用したサービス プリンシパル ロールの管理

Azure CLI を使用したサービス プリンシパル ロールの管理

2023-11-27 21:16| 来源: 网络整理| 查看: 265

Azure CLI で Azure サービス プリンシパルを作成する [アーティクル] 10/17/2023

Azure リソースの安全確保するため、Azure サービスを使用する自動化されたツールのアクセス許可は、常に制限されている必要があります。 そのため、完全な特権を持つユーザーとしてアプリケーションをサインインさせるのではなく、Azure にはサービス プリンシパルが用意されています。 Azure サービス プリンシパルは、アプリケーション、ホストされるサービス、自動化ツールで使用するために作成される ID です。 この ID は、リソースへのアクセスに使用されます。

このチュートリアルでは、次の作業を行う方法について説明します。

サービス プリンシパルの作成 サービス プリンシパルとパスワードを使用してサインインする サービス プリンシパルと証明書を使用してサインインする サービス プリンシパルのロールを管理する サービス プリンシパルを使用して Azure リソースを作成する サービス プリンシパルの資格情報のリセット 前提条件 サブスクリプションでは、サービス プリンシパルを作成するには、 User Access Administrator または Role Based Access Control Administrator 以上のアクセス許可が必要です。 Azure ロールベースのアクセス制御 (Azure RBAC) で使用できるロールの一覧については、Azure の組み込みロール を参照してください。

Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

サービス プリンシパルの作成

az ad sp create-for-rbac Azure CLI 参照コマンドを使用してサービス プリンシパルを作成します。 この例では、--name パラメーターを指定していないため、タイム スタンプを含む名前が自動的に作成されます。

az ad sp create-for-rbac

出力コンソール:

{ "appId": "myAppId", "displayName": "myServicePrincipalName", "password": "myServicePrincipalPassword", "tenant": "myTentantId" }

リソースの名前付け規則に従わず、後で新しいサービス プリンシパルのロールとスコープを作成する予定がある場合は、パラメーターのない az ad sp create-for-rbac コマンドが許容されるソリューションです。 ただし、ロールとスコープがないと、新しいサービス プリンシパルはリソースにアクセスできません。 存在するだけです。

パラメーターを指定せずにサービス プリンシパルを作成する場合は、次の手順も実行します:

システム割り当てパスワードを再度取得できないため、記録てください。 パスワードを紛失した場合は、「サービス プリンシパル資格情報のリセット」で説明されているように、az ad sp credential reset 使用してパスワードをリセットします。 「サービス プリンシパル ロールの管理」で説明されているように、az role assignment create 使用して、新しいサービス プリンシパルのロールの割り当てを設定。 ロールとスコープを持つサービス プリンシパルを作成する

ベスト プラクティスとして、サービス プリンシパルを作成するときは、常に特定の --role と --scopes を割り当てます。 次の手順のようにします。

正しいロールを決定します。

ロールを決定するときは、常に最小特権の原則を使用します。 たとえば、サービス プリンシパルがリソース グループ内の Azure Storage にのみアクセスする必要がある場合は、サービス プリンシパルにサブスクリプションへ contributor アクセス許可を許可しないでください。 ストレージ BLOB データ共同作成者 のような専門なロール考えてみましょう。 Azure RBAC で使用可能なロールの完全な一覧については、「Azure 組み込みロール」を参照してください。

スコープ パラメーターの値を取得します。

新しいサービス プリンシパルがアクセスする必要がある Azure リソースのリソース ID を見つけてコピーすることです。 この情報は通常、Azure portal の各リソースの [プロパティ] または [エンドポイント] ページにあります。 一般的な --scopes の例を次に示しますが、実際の形式と値については、リソース ID で確認してください。

Scope 例 サブスクリプション /subscriptions/mySubscriptionID リソース グループ /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName 仮想マシン /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname ストレージ アカウント ファイル サービス /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default Data Factory /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

スコープの例の詳細については、「Azure RBAC のスコープについて」を参照してください。

サービス プリンシパルを作成します。

この例では、myServicePrincipalName という名前の新しいサービス プリンシパルが、リソース グループ RG1 のすべてのリソースに対する 閲覧者 アクセス許可を使用して作成されます。

Bash PowerShell # Bash script az ad sp create-for-rbac --name myServicePrincipalName1 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1

--scopes パラメーターは、スコープのスペース区切りのリストを受け入れます。 この例では、mySERVICEPrincipalName2 という名前 新しいサービス プリンシパルが、myRG1 リソース グループ内のすべてのリソースに対する 閲覧者 アクセス許可使用して作成されます。 このサービス プリンシパルには、myRG2 にある myVM の閲覧者アクセス許可も付与されています。

# Bash script az ad sp create-for-rbac --name myServicePrincipalName2 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM

PowerShell 環境で作業する場合は、Bash 行の継続文字を削除します。

# PowerShell script az ad sp create-for-rbac --name myServicePrincipalName1 --role reader --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1

--scopes パラメーターは、スコープのスペース区切りのリストを受け入れます。 この例では、mySERVICEPrincipalName2 という名前 新しいサービス プリンシパルが、myRG1 リソース グループ内のすべてのリソースに対する 閲覧者 アクセス許可使用して作成されます。 このサービス プリンシパルには、myRG2 にある myVM の閲覧者アクセス許可も付与されています。

# PowerShell script az ad sp create-for-rbac --name myServicePrincipalName2 --role reader --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM

新しいサービス プリンシパルに対するアクセス許可が少なすぎるか、または多すぎると判断した場合は、サービス プリンシパル ロールを管理 アクセス許可を変更します。

変数を使用してサービス プリンシパルを作成

変数を使用してサービス プリンシパルを作成することもできます。

Bash PowerShell # Bash script let "randomIdentifier=$RANDOM*$RANDOM" servicePrincipalName="msdocs-sp-$randomIdentifier" roleName="azureRoleName" subscriptionID=$(az account show --query id --output tsv) # Verify the ID of the active subscription echo "Using subscription ID $subscriptionID" resourceGroup="myResourceGroupName" echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup" az ad sp create-for-rbac --name $servicePrincipalName \ --role $roleName \ --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup # PowerShell script $randomIdentifier = (New-Guid).ToString().Substring(0,8) $servicePrincipalName="msdocs-sp-$randomIdentifier" $roleName="azureRoleName" $subscriptionID=$(az account show --query id --output tsv) $resourceGroup="myResourceGroupName" echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup" az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

サービス プリンシパルのプロパティの完全な一覧については、az ad sp list 使用し、「既存のサービス プリンシパルを取得する」を参照してください。

警告

az ad sp create-for-rbac コマンドを使用して Azure サービス プリンシパルを作成する場合、出力には、保護する必要がある資格情報が含まれます。 これらの資格情報をコードに含めないようにするか、資格情報をソース管理にチェックインしてください。 別の方法として、資格情報を使用する必要がないように、可能であればマネージド ID を使用することを検討してください。

次のステップ

Azure サービス プリンシパルを作成する方法がわかったので、次のステップに進み、パスワードベースの認証でサービス プリンシパルを使用する方法を理解してください。

パスワード ベースの認証を使用する



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有